Como detectar o toque em um objeto 3D na cena e alterar sua textura
⚠️ para que funcione corretamente é necessário que o objeto possua algum tipo de colisão ⚠️
Em sua classe Java, faça o seguinte:
public class SuaClasse extends Component {
// cria uma nova textura
public Texture textura; // selecione nas propriedades
// cria um novo Laser
private final Laser laser = new Laser();
// cria uma nova Camera, @Singleton anexa o primeiro componente do tipo Camera que encontrar na cena
@Singleton
private Camera camera;
@Override
public void start() {
}
@Override
public void repeat() {
// verificando se o primeiro toque detectado na tela é nulo e retornando o código caso seja verdadeiro
if(Input.getTouch(0) == null) return;
// Vector2 responsável por armazenar a posição do primeiro toque detectado na tela
Vector2 posicao = Input.getTouch(0).getPosition();
// a direção do raio que será disparado da camera na posição da variável "posicao"
RayDirection direcaoDoRaio = camera.screenPointRay(posicao);
// o raio que será disparado
Ray raio = new Ray(direcaoDoRaio, 0);
// o ponto de colisão do laser
LaserHit laserHit = laser.trace(raio);
// verificando se o laserHit é diferente de nulo
if(laserHit != null) {
// buscando o ModelRenderer do objeto que o laserHit detectou
ModelRenderer renderizadorDeModelo = lasetHit.getObject().findComponent(ModelRenderer.class);
// verificando se o ModelRenderer é diferente de nulo
if(renderizadorDeModelo != null) {
// alterando a textura do ModelRenderer do objeto
renderizadorDeModelo.getMaterial().setTexture("albedo", textura);
}
}
}
}